﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace StatesAndEventsTest.source
{
    abstract public class BaseState
    {
        // Members
        /// <summary>
        /// Name of the State, important: used for lookup tables
        /// </summary>
        protected string mName;
        protected delegate void EventHandler();
        protected Dictionary<EventManager.Events, EventHandler> mEventHandlers;

        // Functions
        public BaseState()
        {
            mEventHandlers = new Dictionary<EventManager.Events, EventHandler>();
        }

        // Forced overrides
        abstract public void Init();
        abstract public void Enter();
        abstract public void Update(GameTime gameTime);
        abstract public void Exit();
        abstract public void HandleEvent(EventManager.Events eve);

        // Properties
        public string Name
        {
            get { return mName; }
            set { mName = value; }
        }
    }
}
